// 场景 ：
// 假设对象的结构不清楚
const obj = {
  name: "why",
  age: 18,
  address: {
    province: "广东省",
    city: "深圳市",
    abc: {
      a: 1,
      b: 2,
    },
  },
};
// 如果？前面的属性不存在，则不再继续往下找，直接返回undefined
// 如果？前面的属性存在，则继续往下找
// 目的：避免报错
console.log(obj.address?.abc?.a);




// 可选链的应用场景
// 1.函数调用
interface Func {
  (a: number, b: number): number;
  abc?: () => void;
}
const sum: Func = (a, b) => {
  return a + b;
};
console.log(sum(1, 2));
sum.abc?.(); // 如果abc存在，则调用它，否则不执行

function getData(value?:string){
  console.log(value?.toUpperCase());
}
